查看原文
其他

“失”而复得-浅析手机数据恢复

技术专家 闫鹏飞 盘古石取证 2024-03-12
数据恢复(Data recovery),是指将保存在介质中常规方式不可见、不可读的数据,通过技术手段进行读取的过程。本文标题中的“失”加了引号,正因为我们恢复的数据其实原本就在介质上保存,并未真正丢失,系统在删除数据时仅仅是删除了指向数据的指针并将数据块标记为空闲状态,如果该数据块被新的数据覆盖或者清空,则无法进行恢复。说到电子数据的删除恢复,首先要确定从哪里恢复数据,也就是数据载体,其次要知道恢复什么东西,也就是数据类型。


一、从哪里恢复数据

众所周知,手机中用来存储数据的介质是闪存(一般是NAND Flash),微观来看,其存储原理如下图所示:


写入数据时,闪存利用量子隧穿效应,通过控制栅(Control Gate)加正电压把电子(带负电)吸入浮空栅(Floating Gate)中,电子被锁在浮空栅中无法逃逸,这时读取的状态是0。


删除数据时,在源极加正电压,将注入到浮空栅的负电荷吸引到源极,排空浮动栅的电子,这时读取的状态是1。


浮动栅是由氮化物夹在二氧化硅材料(Insulator)之间构成。随着擦写次数的增加,其保存电子的能力会逐步减弱直至完全无法锁定电子,所以闪存的可擦写次数是有限的。


将上述单元大规模集成后,宏观来看,闪存芯片的设计结构如下图所示:



闪存写入的最小单位叫做页(Page),目前常见大小为16K,而擦除的最小单位是块(block),一般每个块包含128个页。已擦写次数较少的block,还很年轻,生命力强,所以叫做Young block。相对的 Old block就是已擦写次数较多的block,剩下的次数不多了。


由于闪存的可擦写次数是有限的,当某些数据被频繁修改时容易导致对应的块很快被耗尽使用寿命,从而导致整块盘无法使用,所以需要有一种技术来将这些块的擦写均摊一下,延长使用寿命。这种技术叫磨损均衡(Wear Leveling),该技术简单来说就是读写时尽量使用已擦写次数较少的块(Young block),如果有些块上的数据读写频率很低,那么就把这些数据移动到已擦写次数较多的块(Old block),通俗来说就是不要逮住一只羊薅羊毛。



早期的Android系统没有针对闪存进行优化,删除一个文件时并不是把内容写0,而是把索引和文件存储空间标记为作废。但是闪存并不知道这个情况,它还认为文件存储空间是有用的数据,不停的把这些数据搬来搬去,造成性能和寿命的下降。为了解决这个问题,Android在4.3之后支持了一个技术叫Trim。系统在删除文件后会通过Trim指令告诉闪存,这些数据没用了,闪存则将该数据块写0删除。


到这里,有心的读者就很清晰了,Android 4.3版本以后的手机,删除掉的文件(包括视频、图片、语音及各类文档等)是无法恢复的,因为这个数据已经灭失了。


Android 4.3版本之前的手机,可以尝试使用物理镜像的方式恢复。


图:盘古石手机提取系统中的物理镜像提取功能


二、恢复什么数据




由于闪存的特性和Trim机制的引入,手机中恢复图片、视频等被删除的文件数据是非常困难的,那么我们能从手机中恢复什么数据呢,这里就要提到另一个知识点,SQLite数据库,


这是一种轻量级嵌入式数据库, 支持SQL语句,具有占用资源低、易移植、易操作等特点,在iOS和Android系统中有广泛的应用。SQLite数据库以单个文件形式保存,例如:微信中的数据存在名为EnMicroMsg.db的SQLite数据库文件中,数据库中可存放用户信息、联系人及组、聊天记录、缩略图等信息。目前SQLite数据库删除数据恢复的技术主要有以下2种

 

(1) 基于SQLite结构的恢复技术

SQLite 数据库文件由固定大小的“页”(page)组成,页的类型可以是Btree页、空闲(free)页或溢出(overflow)页。Btree 页内部以单元(cell)为单位来组织数据,一个单元包含一个payload (也称为Btree记录),单元是Btree页内部进行空间分配和回收的基本单位。

 

删除数据后仅会改变页头后面的数据指针,同时对于的数据区域标记为自由块,自由块的数据内容并不会被擦除,这就是恢复SQLite数据的基本原理。

以下图QQ聊天记录为例:




数据库中实际情况如下图所示:





(2) 基于事务文件的恢复技术

和其它数据库一样,为了保证数据库的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),SQLite支持事务,在数据的操作(增、删、改)过程中会生成一些日志文件,如wal文件、shm文件、journal文件。特定情况下,数据库中删除的记录我们可以从这些日志文件中恢复。



综上所述,手机数据恢复的关键在于数据库文件的提取,只有提取到数据库文件,才能从中恢复相应数据,如上图所示,盘古石手机取证分析系统可支持最新版本苹果手机的全盘逻辑镜像提取,提取到手机中全部应用数据(包含无法通过iTunes协议备份的数据),为数据恢复奠定了基础。







“盘古石”团队是奇安信科技集团股份有限公司旗下专注于电子数据取证技术研发的团队,由来自国内最早从事电子数据取证的成员组成。盘古石团队以“安全为先,洞鉴未来”为使命,以“漏洞思维”解决电子数据取证难题,以“数据驱动安全”为技术思想,以安全赋能取证,研发新一代电子数据取证产品,产品涵盖计算机取证、移动终端取证、网络空间取证、IoT取证、取证数据分析平台等电子数据取证全领域产品和解决方案,为包括公安执法、党政机关、司法机关以及行政执法部门等提供全面专业的支持与服务。





继续滑动看下一个

“失”而复得-浅析手机数据恢复

技术专家 闫鹏飞 盘古石取证
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存